' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2024.09.09.00.00]) on 2025.07.02 at 22:07 (Coordinated Universal Time) ' This program by Charlie Veniot is a port and mod of Antoni Gual Via's program ' shared with the "BASIC, QBasic, GWBasic computer programming" ' Facebook group (https://www.facebook.com/share/p/15t3dMR6r2/) ' The colour of the LED program can be altered by adding one of 63 colour codes (1-63) ' for this program's screen mode 17 (which uses the "p256" colour mode). ' screen mode documentation: https://bam-progreference.tiddlyhost.com/?target=Bookmarks%3A%3ASCREEN%20Modes#Home ' ' Example URL with colour code 15 as a preference: ' https://basicanywheremachine.neocities.org/sample_programs/DRAW%20DIGITAL%20CLOCK.prod.run?color=15 ' 🟡🟡🟡 Declarations DECLARE SUB digit7( n%, x%, y%, c%, s% ) DECLARE FUNCTION UrlParm$(key$) DEFINT a-z DIM b(0 TO 5) ' 🟡🟡🟡 Initialization SCREEN _NEWIMAGE( 544, 130, 17 ) b(0) = -1: b(1) = -1: b(2) = -1: b(3) = -1: b(4) = -1: b(5) = -1 c = VAL( NVL$( UrlParm$( "color" ), 59 ) ) s = 12 GOSUB DrawColons ' 🟡🟡🟡 Main Program DO t$ = TIME$ FOR i = 0 TO 5 a = VAL( MID$( t$, 1 + INT( i * 1.5 ), 1 ) ) ' change digit only if changed IF a <> b(i) THEN digit7 (a, 20 + INT(i * 1.5) * (4 + 5 * s), 20, c, s) b(i) = a NEXT SLEEP 1 LOOP END ' 🟡🟡🟡 Procedures / Functions DrawColons: DRAW "c=" + c + "s=" + s DRAW "bm172,84u2r2d2l2 bm +1,-12 u2r2d2l2" PAINT( 176, 80 ), c, c : PAINT( 177, 44 ), c, c DRAW "bm364,84u2r2d2l2 bm +1,-12 u2r2d2l2" PAINT( 368, 80 ), c, c : PAINT( 369, 44 ), c, c RETURN SUB digit7 (n, x, y, c, s) ' 1 '2 3 ' 4 '5 6 ' 7 CONST ang = 84 DIM i AS INTEGER bar$ = "E2r10f2g2l10h2" s4 = s / 4 'set visible bars for each figure SELECT CASE n CASE 0: a1 = c: a2 = c: a3 = c: a4 = 0: a5 = c: a6 = c: a7 = c CASE 1: a1 = 0: a2 = 0: a3 = c: a4 = 0: a5 = 0: a6 = c: a7 = 0 CASE 2: a1 = c: a2 = 0: a3 = c: a4 = c: a5 = c: a6 = 0: a7 = c CASE 3: a1 = c: a2 = 0: a3 = c: a4 = c: a5 = 0: a6 = c: a7 = c CASE 4: a1 = 0: a2 = c: a3 = c: a4 = c: a5 = 0: a6 = c: a7 = 0 CASE 5: a1 = c: a2 = c: a3 = 0: a4 = c: a5 = 0: a6 = c: a7 = c CASE 6: a1 = c: a2 = c: a3 = 0: a4 = c: a5 = c: a6 = c: a7 = c CASE 7: a1 = c: a2 = 0: a3 = c: a4 = 0: a5 = 0: a6 = c: a7 = 0 CASE 8: a1 = c: a2 = c: a3 = c: a4 = c: a5 = c: a6 = c: a7 = c CASE 9: a1 = c: a2 = c: a3 = c: a4 = c: a5 = 0: a6 = c: a7 = c END SELECT ' scale and locate bars DRAW "s=" + s ' draw bars FOR i = 1 TO 7 SELECT CASE i CASE 1: xx = x + 3 * s4 : yy = y + 0 * s4 : cc = a1 : an = 0 CASE 2: xx = x + 1 * s4 + 1 : yy = y + 15 * s4 - 1 : cc = a2 : an = ang CASE 3: xx = x + 16 * s4 + 2 : yy = y + 15 * s4 - 1 : cc = a3 : an = ang CASE 4: xx = x + 2 * s4 : yy = y + 16 * s4 - 2 : cc = a4 : an = 0 CASE 5: xx = x + 1 * s4 - 2 : yy = y + 32 * s4 - 6 : cc = a5 : an = ang CASE 6: xx = x + 15 * s4 + 2 : yy = y + 32 * s4 - 6 : cc = a6 : an = ang CASE 7: xx = x + 1 * s4 : yy = y + 33 * s4 - 7 : cc = a7 : an = 0 END SELECT DRAW "bm=" + xx + ",=" + yy + "ta=" + an + "c=" + cc + bar$ PAINT( xx + CHOOSE(i,15,0,0,15,0,0,15), yy + CHOOSE(i,0,-10,-10,0,-10,-10,0) ), cc, cc NEXT END SUB FUNCTION UrlParm$(key$) UrlParm$ = "" keyPos% = INSTR( UCASE$( UrlQueryString$ ), [ UCASE$( key$ ) + "=" ] ) IF keyPos% THEN step1$ = RIGHT$( UrlQueryString$, [ LEN( UrlQueryString$ ) - keyPos% - LEN( key$ ) ] ) step2% = INSTR(step1$, "&") UrlParm$ = IFF( step2%, [ LEFT$( step1$, step2% - 1 ) ], step1$ ) END IF END FUNCTION